package cn.algorithm;

import java.util.List;

/**
 * @author: lizemin
 * @version: 1.0
 */
public class Test1 {
    //{65,55,45,35,25,15,10}
    // 1. 65 > 55 => 55 65
    // 2. 65   45 => 55 45 65
    //  arr[i] > arr[i+1] => 交换位置
    //第2轮, 第3轮, 第...n-1 轮, 这个


    //测试冒泡排序, 就是进行多轮, 每一轮都是前一个数和后一个数相比较.如果前者更大, 就交换位置.整个过程在遍历中发生,
    //最大的困难是不知道会进行多少轮的排序.答案是n-1,
    //2.每一轮需要的次数是不一样的.最后一个元素不需要参与比较,这个如何表示?那么内层的循环次数每次就需要 -1
    public static int[] bubble_sort(int[] arr){
        int unsorted_until_index = arr.length;
        boolean sorted = false;
        while (!sorted){
            //每次循环内需要将比较的索引的最大值 - 1
            sorted = true;
            for (int j = 0; j < unsorted_until_index - 1; j++) {//初始:最大索引值 - 1
                //如果前者比后者大, 那么就交换两者的位置.
                if (arr[j] > arr[j+1]){
                    sorted = false;
                    int tem = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tem;
                }
            }
            unsorted_until_index -= 1;
        }
        return arr;

    }

    //这是一个main方法,是程序的入口
    public static void main(String[] args) {
        int[] arr = new int[]{85,75,5,65,55,45,35,25,15,10};
        int[] arr2 = bubble_sort(arr);
        for (int i = 0; i < arr2.length; i++) {
            System.out.print(arr2[i]+"\t");


        }

    }




}
